#include <stdio.h>;
void state(int hp, int hp2, int mp, int mp2, int atk) {
	printf("你的属性：HP：%d/%d，MP%d/%d，攻击力 %d", hp2, hp, mp2, mp, atk);
};

int main(void)
{
	printf("   ===============================================================\n");
	printf("   =                                                             =\n");
	printf("   =                                                             =\n");
	printf("   =                勇   者   斗   恶  龙 625          =\n");
	printf("   =                                                             =\n");
	printf("   =												             =\n");
	printf("   =                                                             =\n");
	printf("   ===============================================================\n\n\n\n");


	printf("剧情介绍：\n从前,有一个美丽的王国，人民安居乐业，政治清明经济繁荣。\n");
	printf("直到有一天，一头恶龙来到了首都的西部荒野，它用魔法建立了一座城堡，\n并且派它手下的大将，恐惧魔王抓走了公主，把她关在城堡的地牢里。\n");
	printf("国王忧急万分，他向全国发出了号召，哪位勇士能杀死恶魔，救出公主，就\n把公主许配给他,并在今后继承王位！\n");
	printf("可是，有一千名勇士前往了城堡，他们全都一去无回……\n");
	printf("终于，你出现了！你是全国最强大的勇士，你相信自己能成功打败魔王，救出公主。\n");
	printf("现在，你正准备在首都做一些准备，擦亮武器，准备补给，前往城堡……\n\n\n");

	int hp = 500, mp = 100, atk = 50, skill = 100;/*定义主角的生命值，魔力值，基础攻击力，技能攻击力*/
	int hp2 = hp, mp2 = mp;int gold = 500;/*定义主角的当前生命值，魔力值*/
	int a = 0, b = 0, c = 0;/*定义几个形参*/
	do {
		printf("你现在的位置是 王国首都。\n你目前的状态是\n");
		state(hp, hp2, mp, mp2, atk);
		printf("  你现在有金币%d个。\n你现在可以去:\n", gold);
		printf("1.恶龙城堡 2.武器铺 3.旅店 4.练武馆 \n");
		scanf_s("%d", &c);
		switch (c) {
		case 1: /*恶龙城堡*/ {
			printf("你确定吗？前往恶龙城堡即将面临一场恶战……\n确定：1//  取消//0\n");
			scanf_s("%d", &a);
			if (a != 1)
				c = 5;
			break;
		};
		case 2:/*武器铺*/ {
			puts("你来到了武器铺。");
			puts("老板：欢迎光临！想要点什么？");
			printf("1.铁剑-200g 2.银剑-300g 3.金盾-200g 4.圣盾-500g\n");scanf_s("%d", &b);
			switch (b)
			{
			case 1:/*铁剑*/ {
				if (gold < 200) {
					printf("金币不足！");

				}
				else
				{
					puts("你装备了铁剑，攻击力+20！");
					gold -= 200;atk += 20;
				}
				break;
				;
			}
			case 2:/*银剑*/ {
				if (gold < 300) {
					printf("金币不足！");

				}
				else
				{
					puts("你装备了铁剑，攻击力+40！");
					gold -= 300;atk += 40;
				}
				break;
			};
			case 3:/*金盾*/ {
				if (gold < 300) {
					printf("金币不足！");

				}
				else
				{
					puts("你装备了金盾，最大生命+300！");
					gold -= 300;hp += 300;hp2 += 300;
				}
				break;
			}
			case 4:/*圣盾*/ {
				if (gold < 500) {
					printf("金币不足！");

				}
				else
				{
					puts("你装备了金盾，最大生命+500！十字斩的基础伤害提高了！");
					gold -= 500;hp += 500;hp2 += 500;skill += 100;
				};
				break;
			}
			}
			break;
		};
		case 3:/*旅店*/ {
			printf("旅店现在空无一人……(旅店即将在1.0版本中开放，敬请期待)");
			break;
		};
		case 4:/*练武馆*/ {
			puts("你要找谁？\n1.圣骑士-50g 2.狂战士-100g 3.法师-50g 4.离开");scanf_s("%d", &b);
			switch (b) {
			case 1: {
				if (gold < 50) {
					printf("金币不足！");

				}
				else
				{
					puts("十字斩的基础伤害提高了！");
					gold -= 50;skill += 50;
				};
				break;
			}
			case 2: {
				if (gold < 100) {
					printf("金币不足！");

				}
				else
				{
					puts("普通攻击基础伤害提高了！");
					gold -= 100;atk += 7;
				};
				break;
			}
			case 3: {
				if (gold < 50) {
					printf("金币不足！");

				}
				else
				{
					puts("法力值上升了！");
					gold -= 50;mp += 50;mp2 = 50;
				};
				break;
			}
			case 4:break;
			default: { printf("你的输入错误！");break; }

			};

		}
		};



		printf("\n\n\n");
	} while (c != 1);/*首都事件组*/

	printf("你来到了恶龙城堡，你见到了恶龙！你抽出长剑，开始与巨龙恶斗！");
	int hp3 = 1000, atk3 = 50;/*定义敌人血量、攻击力*/
	printf("\n你观察到恶龙还有1000点生命!\n");
	do/*操作阶段*/
	{
		printf("轮到你行动了！\n1.普通攻击 2.十字斩 3.休息 4.判断战局形势");
		scanf_s("%d", &b);
		switch (b) {
		case 1: {
			hp3 -= atk;
			printf("你向恶龙猛砍了过去！恶龙受到%d点伤害！恶龙还有%d点血量!\n", atk, hp3);

			break;
		};
		case 2: {
			hp3 -= skill;
			printf("你对恶龙使用了技能十字斩！恶龙受到%d点伤害！恶龙还有%d点血量!\n", skill, hp3);

			break;
		};
		case 3: {
			printf("你开始休息回血。你恢复了20点HP，20点MP！\n");
			hp2 += 20;mp2 += 20;
			if (hp2 > hp)
			{
				hp2 = hp;
			};
			if (mp2 > mp)
			{
				mp2 = mp;
			};/*防止数值溢出*/
			break;
		}
		case 4:state(hp, hp2, mp, mp2, atk);printf("\n恶龙还有%d点血量", hp3);
		};
		hp2 -= 50;
		printf("轮到恶龙行动了！恶龙对你造成了50点伤害！你还剩%d点血量！", hp2);
		if (hp2 <= 0) {
			printf("\n\n你的血量已经归零!你被恶龙打败了！这都打不过，赶紧重开吧！");
			printf("程序结束。请按ENTER键退出。");scanf_s("%d", &a);
			return 0;


		};

	} while (hp3 > 0);
	printf("\n恶龙的血量归零了！\n你击败了恶龙！救出了公主！从此过上了幸福的生活！。\n");
	printf("程序结束。请按ENTER键退出。");scanf_s("%d", &a);

	return 0;
};
